package co.edu.uniandes.ecos.dal;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import co.edu.uniandes.ecos.comunicacion.ConnectionManager;
import co.edu.uniandes.ecos.entidades.Mensaje;

public class MensajeDal {
	public static ArrayList<Mensaje> listaMensajes  = new ArrayList<Mensaje>();	
	private static ConnectionManager manager = null;
	
	public  MensajeDal() throws SQLException{
		manager = new ConnectionManager();
		manager.open();		
		Statement s;
		try {
			
			s = manager.getConexion().createStatement();
			ResultSet rs = s.executeQuery ("SELECT * FROM Mensajes;");
			Mensaje mensaje = null;
			while (rs.next())
			{
				mensaje = new Mensaje();
				mensaje.setIdCasa(rs.getString(1));
				mensaje.setIdEvento(rs.getString(2));
				mensaje.setCantidadPersonasXVivienda(rs.getString(3));
				mensaje.setInfoAdicional(rs.getString(4));
				mensaje.setFecha(rs.getTimestamp(5));
				listaMensajes.add(mensaje);				
			}
			manager.close();
			rs.close();
		} catch (SQLException e) {
			throw e;		
		}
	}
	
	public boolean guardarMensaje(Mensaje mensaje) throws SQLException{		
		PreparedStatement psInsertar = null; 
		try {
			manager.open();
			psInsertar = manager.getConexion().prepareStatement("INSERT INTO Mensajes VALUES(?,?,?,?,?);");
			psInsertar.setString(1,mensaje.getIdCasa());
			psInsertar.setString(2,mensaje.getIdEvento());
			psInsertar.setString(3,mensaje.getCantidadPersonasXVivienda());
			psInsertar.setString(4,mensaje.getInfoAdicional());
			psInsertar.setTimestamp(5, mensaje.getFecha());
			psInsertar.executeUpdate();
			listaMensajes.add(mensaje);
			manager.close();
			System.out.println("Guardado "+ mensaje.getIdCasa() +"");
			return true;			
		} catch (SQLException e) {
			throw e;
		}
	}

	public String mensajesXCasa(String idCasa){
		String salida = "";
		for(Mensaje m : listaMensajes){
			if(m.getIdCasa().equals(idCasa)){
				salida = salida + m.toString() ;
			}
		}
		return salida;
	}
	
	public ArrayList<Mensaje> mensajesXCasaLista(String idCasa){
		ArrayList<Mensaje> list = new ArrayList<Mensaje>();		
		for(Mensaje m : listaMensajes){
			if(m.getIdCasa().equals(idCasa)){
				list.add(m);
			}
		}
		return list;
	}
}